iT邦幫忙

2025 iThome 鐵人賽

DAY 10
0
AI & Data

為你自己學 n8n系列 第 10

[為你自己學 n8n] 第 10 天,Gmail 自動化:收信、回信、不漏信!

  • 分享至 

  • xImage
  •  

Yes

影片連結:https://www.youtube.com/watch?v=qXxcDML-tFQ
YouTube 頻道:https://www.youtube.com/c/kaochenlong

在上一集,我們花了十幾個步驟終於把 Google 的 OAuth 認證設定完成,拿到了 Client ID 和 Client Secret。現在,我們終於可以享用這個成果了!這一集,我們將深入探討如何使用 n8n 的 Gmail 節點來實現自動化的郵件收發,包括寄信、收信、自動回覆,等實用的技巧。

你會發現,前面那些繁瑣的 OAuth 設定步驟做完之後,接下來使用 Gmail 功能真的非常簡單。

Gmail 節點的基本操作

認識 Gmail 節點

當你在 n8n 中搜尋 Gmail,會發現這個節點提供了豐富的功能:

  • Message 相關操作:收信、寄信、回覆、刪除訊息
  • Label 相關操作:建立標籤、為郵件加標籤
  • Draft 相關操作:建立草稿、刪除草稿
  • Thread 相關操作:處理討論串、為討論串加標籤

每一個功能都對應著我們在 Gmail 中的日常操作,而透過 n8n,我們可以將這些操作自動化。

第一封自動化郵件:簡單寄信

讓我們從最簡單的寄信開始。首先,建立一個新的工作流程:

  1. 選擇「Manual Trigger」(手動觸發)作為起點
  2. 點擊加號,搜尋並選擇 Gmail 節點
  3. 在 Action 中選擇「Send Message」

接下來設定郵件內容:

收件人:你的測試信箱(記得寄給自己測試,不要寄給我!)
主旨:Hello World
訊息格式:HTML
內容:你好嗎?

這裡的每個欄位都很直觀:

  • Credential:選擇你在上一集設定好的 OAuth 認證(如果沒有,代表上一集沒有成功,要回去重新設定)
  • To:收件人信箱
  • Subject:郵件主旨
  • Message Type:選擇 HTML 或純文字
  • Message:郵件內容

執行這個工作流程,當你看到綠色勾勾,就代表寄出去了。你應該會在信箱中收到一封非常 Live、非常及時、火燙的信件。簡單吧?但是等等,你可能會注意到一個問題...

當你收到剛才寄出的信件時,應該會在郵件底部看到一行 "This email was sent automatically with n8n" 的字樣。看了不是很舒服對吧?你應該不會想要被老闆發現說「哎呦,原來你這個信是 n8n 自動寄的」。你要讓他有一種你是有在工作的感覺。

解決方法很簡單,但它藏在一個有趣的地方:

  1. 在 Gmail 節點中,點擊「Add Option」
  2. 找到「Append n8n Attribution」這個選項
  3. 你會發現它預設是打開的(這個設計其實有點糟糕)
  4. 把這個選項關閉(不要勾選)

重新執行工作流程,這次收到的郵件底下就不會有那一行 n8n 的字樣了。

處理多筆資料:彙整後再寄送

現在讓我們來做一些更有趣的事情。還記得我們之前做的天龍書局排行榜嗎?假設我們想要每天寄一封郵件,告訴老闆今天有哪些 Python 相關的書籍在排行榜上。

問題:多筆資料會寄多封信

如果你直接把篩選後的資料接到 Gmail 節點,會發生什麼事?

篩選節點 → 2筆資料 → Gmail節點 → 寄出2封信

注意看前一個節點的輸出,如果有兩筆資料(兩個 items),n8n 會寄出兩封信!如果有 30 本書,就會寄 30 封信,那你老闆就被煩死了。

解決方案:使用 Summarize 節點彙整資料

我們需要先把多筆資料彙整成一筆,這時候要用到 Summarize 節點。組合的英文不知道大家知不知道,如果不知道的話,剛好趁這個機會學一下,它叫做 Concatenate:

  1. 在篩選節點後面加入 Summarize 節點
  2. 選擇 Action 為「Concatenate」(拼裝、組合的意思,注意是組合在一起,不是合併)
  3. 選擇要彙整的欄位(例如:書名),把它拖拉過來
  4. 設定分隔符號(Separator)

這裡有個重要的技巧,可能比較不是工程師的話會不知道:在 HTML 裡面,換行是沒有意義的,它不會被渲染出來。所以如果你要寄 HTML 格式的郵件,分隔符號要用 HTML 的換行標籤 <br>,而不是一般的換行符號(Line Break)。

完整的郵件內容組合

現在我們可以在郵件內容中這樣寫:

今天天瓏書局跟 Python 有關的書有 <br />

{{ $json.concatenated_books }}

雖然在預覽時看起來有點怪(因為 <br> 標籤還沒被渲染),但實際上這個信件到時候會正確換行,不用擔心。

自動收信與回覆

收信功能使用的是橘色的 Trigger 節點(閃電圖示),它可以設定定期檢查信箱。在 Gmail Trigger 節點中,你可以設定 Poll Times(多久去拉一次信):

  • Every Minute:每分鐘檢查一次
  • Every Hour:每小時檢查一次
  • Every Day:每天檢查一次
  • Custom (Cron):使用 Cron 表達式自訂時間,但這個是給工程師看的,通常上面那些就夠用了。

設定收信過濾條件

在 Filters 選項中,你可以決定要收什麼樣的信。因為如果沒有特別講的話,它會全部都收,這樣可能會有點沒有效率:

  • Include Spam and Trash:要不要連垃圾桶的信都收(這很重要,很多時候重要信件都一不小心被丟到垃圾桶)
  • Include Draft:要不要連草稿也收
  • Label Names:只收特定標籤的郵件
  • Search:搜尋特定關鍵字(例如:"n8n",這樣只有標題有 n8n 的信會被收進來)
  • Read Status
    • Unread and read emails:全部都收
    • Unread emails only:只收還沒讀過的(建議選這個,也比較合理)
    • Read emails only:只收已讀的
  • Sender:只收特定寄件人的郵件

自動回覆郵件

收到信後要自動回覆,流程是這樣的:

Gmail Trigger → Gmail (Reply to Message)

在 Reply to Message 節點中,最重要的是設定 Message ID。這時你可能會想:「哇,這是什麼?我不知道!」

別擔心,看一下左手邊,這是你剛才收到的信對不對?在信裡面,這個 ID 就是那個 Message ID。所以你要把這個 ID 拖拉過來,這樣代表說待會如果回覆,就會回覆給原本寄信給我的人。

重要技巧:標記郵件為已讀

寄完信之後,問題來了。如果再跑一次這個工作流程會發生什麼事?會再去收一次信,然後再回一次信!為什麼?

因為我們設定只收未讀信件,但是我們沒有把信標記成已讀,所以它會發現「這封信我沒有讀過」,然後又再回一次,到時候你就被罵了。完整的自動回覆流程應該是:

Gmail Trigger → Reply to Message → Mark as Read

怎麼把信件標記成已讀呢?

  1. 再加入一個 Gmail 節點
  2. 選擇「Mark a message as read」動作
  3. 設定 Message ID

這裡要特別小心! 你要標記的是原本對方寄給你的信,不是你回覆的信,所以 Message ID 要選 Gmail Trigger 節點的 ID,而不是 Reply 節點的 ID。是說,要怎麼知道要選這個 ID?不難,多試幾次(或多被罵幾次)你就學會了。

實際應用場景

透過這些功能,你可以實現:

  1. 每日報表自動發送:彙整資料後自動寄給主管
  2. 客服信件自動分類:根據內容自動加標籤並轉發
  3. 庫存警示通知:當庫存低於標準時自動發信通知
  4. 自動回覆系統:結合 AI 節點實現智慧客服

總結

這一集我們學會了:

  • 使用 Gmail 節點寄信(記得關掉 n8n 品牌標記)
  • 使用 Summarize 節點處理多筆資料(避免寄出多封信)
  • 設定 Gmail Trigger 自動收信
  • 實作自動回覆機制
  • 最重要的:記得標記已讀,避免重複處理

使用起來應該還蠻簡單的,至少跟上一集比起來,這應該簡單很多了。

下一步

下一集,我們將結合 Google Sheets,做一些比較有趣的應用。例如說檢查庫存,如果你的庫存是 Excel 做的話,我們可以讓 n8n 來檢查庫存量,如果不夠就發信件通知。這將展示如何整合不同的 Google 服務,建立更複雜、更實用的自動化流程。

痛苦的部分(OAuth 設定)已經過去,接下來就是享受自動化帶來的便利了!


上一篇
[為你自己學 n8n] 第 9 天,Google 大神駕到:串接服務的必修儀式!
系列文
為你自己學 n8n10
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言